<?php

namespace common\models\db;

use Yii;

/**
 * This is the model class for table "tbl_system_config".
 *
 * @property int $id
 * @property string $config_key 配置键
 * @property string $config_value 配置值
 * @property string|null $term_type 期限类型：short_term(1-5年)或long_term(5年以上)
 * @property string|null $rate_type 利率类型：commercial(商贷)或fund(公积金)
 * @property string|null $description 配置描述
 * @property string $created_at 创建时间
 * @property string $updated_at 更新时间
 */
class SystemConfig extends \yii\db\ActiveRecord
{
    // 期限类型常量
    const TERM_TYPE_SHORT = 'short_term'; // 1-5年
    const TERM_TYPE_LONG = 'long_term';   // 5年以上
    
    // 利率类型常量
    const RATE_TYPE_COMMERCIAL = 'commercial'; // 商业贷款
    const RATE_TYPE_FUND = 'fund';             // 公积金贷款
    
    /**
     * {@inheritdoc}
     */
    public static function tableName()
    {
        return 'tbl_system_config';
    }

    /**
     * {@inheritdoc}
     */
    public function rules()
    {
        return [
            [['config_key', 'config_value'], 'required'],
            [['created_at', 'updated_at'], 'safe'],
            [['config_key'], 'string', 'max' => 50],
            [['config_value', 'description'], 'string', 'max' => 255],
            [['term_type', 'rate_type'], 'string', 'max' => 20],
            [['config_key'], 'unique'],
        ];
    }

    /**
     * {@inheritdoc}
     */
    public function attributeLabels()
    {
        return [
            'id' => 'ID',
            'config_key' => '配置键',
            'config_value' => '配置值',
            'term_type' => '期限类型',
            'rate_type' => '利率类型',
            'description' => '配置描述',
            'created_at' => '创建时间',
            'updated_at' => '更新时间',
        ];
    }
    
    /**
     * 获取期限类型选项
     * @return array
     */
    public static function getTermTypeOptions()
    {
        return [
            self::TERM_TYPE_SHORT => '1-5年',
            self::TERM_TYPE_LONG => '5年以上',
        ];
    }
    
    /**
     * 获取利率类型选项
     * @return array
     */
    public static function getRateTypeOptions()
    {
        return [
            self::RATE_TYPE_COMMERCIAL => '商业贷款',
            self::RATE_TYPE_FUND => '公积金贷款',
        ];
    }
    
    /**
     * 获取配置值，如果是JSON则解析为数组
     * @return array|string
     */
    public function getConfigValueArray()
    {
        $value = $this->config_value;
        if (empty($value)) {
            return [];
        }
        
        $decoded = json_decode($value, true);
        if (json_last_error() === JSON_ERROR_NONE) {
            return $decoded;
        }
        
        return $value;
    }
}
